1699D - Almost Triple Deletions - CodeForces Solution


data structures dp greedy *2300

Please click on ads to support us..

C++ Code:

#include <iostream>
#include <vector>
using namespace std;

const int MAXN = 5e3 + 5;

int n;
int a[MAXN];
int dp[MAXN];
int cnt[MAXN];

void solve() {
    cin >> n;

    for(int i = 1; i <= n; ++i) {
        cin >> a[i];
    }

    for(int i = 0; i <= n + 1; ++i) {
        cnt[i] = dp[i] = 0;
    }

    for(int i = 0; i <= n; ++i) {
        if(i > 0 && dp[i] == 0) {
            continue;
        }

        int currmax = 0;

        for(int j = 1; j <= n; ++j) {
            cnt[a[j]] = 0;
        }

        for(int j = i + 1; j <= n + 1; ++j) {
            if(currmax * 2 <= (j - i) && (i - j + 1) % 2 == 0) {
                if(i == 0 || j == (n + 1) || a[i] == a[j]) {
                    dp[j] = max(dp[j], dp[i] + 1);
                }
            }
            ++cnt[a[j]];
            currmax = max(currmax, cnt[a[j]]);
        }
    }

    cout << dp[n + 1] - 1 << endl;
}

int main() {
    int t;
    cin >> t;
    while(t--) solve();
    return 0;
}
 	   		   	  	 			 	   		  				


Comments

Submit
0 Comments
More Questions

1359A - Berland Poker
459A - Pashmak and Garden
1327B - Princesses and Princes
1450F - The Struggling Contestant
1399B - Gifts Fixing
1138A - Sushi for Two
982C - Cut 'em all
931A - Friends Meeting
1594A - Consecutive Sum Riddle
1466A - Bovine Dilemma
454A - Little Pony and Crystal Mine
2A - Winner
1622B - Berland Music
1139B - Chocolates
1371A - Magical Sticks
1253A - Single Push
706B - Interesting drink
1265A - Beautiful String
214A - System of Equations
287A - IQ Test
1108A - Two distinct points
1064A - Make a triangle
1245C - Constanze's Machine
1005A - Tanya and Stairways
1663F - In Every Generation
1108B - Divisors of Two Integers
1175A - From Hero to Zero
1141A - Game 23
1401B - Ternary Sequence
598A - Tricky Sum